MVVM প্যাটার্নে View হলো এমন উপাদান যা ব্যবহারকারীকে অ্যাপ্লিকেশনের ইন্টারফেস প্রদর্শন করে। এটি ViewModel থেকে প্রাপ্ত ডেটাকে উপস্থাপন করে এবং ব্যবহারকারীর ইনপুট গ্রহণ করে। Data Binding হল একটি প্রযুক্তি, যা View এবং ViewModel এর মধ্যে যোগাযোগ স্থাপন করে এবং ডেটাকে সিঙ্ক্রোনাইজ করে। View-এ ব্যবহারকারীর ইনপুট এবং ViewModel-এ ডেটা পরিবর্তন একে অপরের সাথে স্বয়ংক্রিয়ভাবে আপডেট হয়।
এখানে View তৈরি এবং Data Binding এর ব্যবহার সম্পর্কে বিস্তারিত আলোচনা করা হয়েছে।
View সাধারণত UI উপাদান বা কন্ট্রোলের সমষ্টি যা ব্যবহারকারীর সাথে যোগাযোগ করে। MVVM প্যাটার্নে, View শুধুমাত্র UI সম্পর্কিত কাজ করে এবং ViewModel এর সাথে যোগাযোগ করতে Data Binding ব্যবহার করে। এতে View এর কোড সরল থাকে এবং বিজনেস লজিক বা ডেটা প্রসেসিং ViewModel দ্বারা পরিচালিত হয়।
UI উপাদান তৈরি: প্রথমে আপনি View-এ UI উপাদান তৈরি করবেন। এটি সাধারণত XAML (যেমন WPF, Xamarin.Forms) বা HTML (যেমন Blazor, ASP.NET) এ হয়।
<TextBox x:Name="ProductNameTextBox" Width="200" Height="30" />
<Button Content="Submit" Command="{Binding SubmitCommand}" />
Layout এবং স্টাইল সেট করা: View তৈরি করার সময় UI উপাদানগুলির লেআউট এবং স্টাইল সেট করা হয়। আপনি Grid, StackPanel, Flexbox, ইত্যাদি ব্যবহার করতে পারেন।
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<TextBlock Text="Product Name" Grid.Row="0" />
<TextBox x:Name="ProductNameTextBox" Grid.Row="1" Width="200" />
</Grid>
Data Binding হল একটি প্রক্রিয়া যার মাধ্যমে ViewModel এর ডেটা View এর UI উপাদানগুলির সাথে যুক্ত করা হয়। এর মাধ্যমে View-এ পরিবর্তিত ডেটা ViewModel-এ পৌঁছে যায় এবং vice versa। Data Binding দুই ধরনের হতে পারে: One-Way এবং Two-Way।
One-Way Data Binding:
<TextBlock Text="{Binding ProductName}" />
এখানে TextBlock এর Text প্রপার্টি ViewModel এর ProductName
প্রপার্টির সাথে বাইন্ড করা হয়েছে। যখন ProductName পরিবর্তিত হবে, তখন এটি UI তে আপডেট হবে।
Two-Way Data Binding:
<TextBox Text="{Binding ProductName, Mode=TwoWay}" />
এখানে TextBox এর Text প্রপার্টি ViewModel এর ProductName
প্রপার্টির সাথে TwoWay বাইন্ড করা হয়েছে, যাতে ব্যবহারকারী যখন কিছু লিখবেন, তা ViewModel এ সেভ হবে এবং ViewModel-এর পরিবর্তন View-এ রিফ্লেক্ট হবে।
One-Way to Source Binding:
<TextBox Text="{Binding ProductName, Mode=OneWayToSource}" />
Command Binding ব্যবহারকারীর অ্যাকশনের জন্য ViewModel-এ কমান্ড পাঠানোর প্রক্রিয়া। View থেকে কোনো ইভেন্ট (যেমন বাটনে ক্লিক করা) ViewModel-এ কমান্ড পাঠায় এবং সেখানে সেই কমান্ডের জন্য নির্দিষ্ট লজিক চালানো হয়।
ViewModel-এ কমান্ড তৈরি করা:
public ICommand SubmitCommand { get; set; }
public ViewModel()
{
SubmitCommand = new RelayCommand(OnSubmit);
}
private void OnSubmit()
{
// Submit লজিক
}
View-এ কমান্ড বাইন্ড করা:
<Button Content="Submit" Command="{Binding SubmitCommand}" />
এখানে Button এর Command প্রপার্টি ViewModel-এর SubmitCommand
এর সাথে বাইন্ড করা হয়েছে। বাটনে ক্লিক করলে OnSubmit মেথড কল হবে।
Data Binding এবং Command প্যাটার্ন একসাথে ব্যবহার করার মাধ্যমে অ্যাপ্লিকেশনের UI এবং লজিককে আরও সহজ এবং পরিষ্কার রাখা যায়। View এবং ViewModel এর মধ্যে যোগাযোগ প্রক্রিয়া সহজ হয় এবং কোডের পুনঃব্যবহারযোগ্যতা বাড়ে।
MVVM প্যাটার্নে View এমন একটি উপাদান যা ViewModel থেকে ডেটা প্রাপ্ত করে এবং সেটি ব্যবহারকারীর কাছে প্রদর্শন করে। View সাধারণত UI উপাদানগুলির মাধ্যমে ViewModel এর সাথে যোগাযোগ করে, যেখানে XAML (Extensible Application Markup Language) ব্যবহৃত হয় UI তৈরি করতে। XAML একটি declarative মার্কআপ ভাষা, যা UI উপাদানগুলি, তাদের বৈশিষ্ট্য এবং ডেটা বাইন্ডিং নির্ধারণ করতে সাহায্য করে।
এখানে View তৈরি করার এবং XAML ব্যবহার করার পদ্ধতি ব্যাখ্যা করা হলো।
View হল অ্যাপ্লিকেশনের UI অংশ, যা সরাসরি ব্যবহারকারীর সাথে ইন্টারঅ্যাক্ট করে। MVVM প্যাটার্নে, View সাধারণত ViewModel এর সাথে ডেটা বাইন্ডিংয়ের মাধ্যমে যোগাযোগ করে, কিন্তু এটি কখনও সরাসরি Model বা বিজনেস লজিকের সাথে কাজ করে না।
XAML হল একটি declarative ভাষা যা .NET Framework-এর জন্য UI ডিফাইন করতে ব্যবহৃত হয়, বিশেষত WPF (Windows Presentation Foundation) এবং Xamarin (মোবাইল অ্যাপ্লিকেশন) অ্যাপ্লিকেশনগুলির ক্ষেত্রে। XAML এ UI উপাদানগুলো এমনভাবে সাজানো থাকে, যা অ্যাপ্লিকেশনটির দর্শনীয় অংশকে পরিচালনা করে এবং সহজে অ্যাক্সেসযোগ্য করে তোলে।
<Window x:Class="MyApp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<TextBox Name="txtName" Width="200" Height="30" Margin="10" />
<Button Content="Click Me" Width="100" Height="30" Margin="10,50,10,10" />
<Label Content="Hello, World!" Width="200" Height="30" Margin="10,100,10,10" />
</Grid>
</Window>
এখানে:
MVVM প্যাটার্নে Data Binding খুবই গুরুত্বপূর্ণ, কারণ এটি View এবং ViewModel এর মধ্যে ডেটার সিঙ্ক্রোনাইজেশন তৈরি করে। XAML এ ডেটা বাইন্ডিং ব্যবহার করা খুবই সহজ। Binding ট্যাগের মাধ্যমে View এবং ViewModel এর মধ্যে ডেটা ট্রান্সফার করা যায়।
XAML-এ Data Binding ব্যবহার করার জন্য, আপনাকে ViewModel এর প্রপার্টি-র সাথে UI উপাদান এর বৈশিষ্ট্য বাইন্ড করতে হবে। এখানে একটি সাধারণ উদাহরণ দেওয়া হলো:
<Window x:Class="MyApp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Window.DataContext>
<local:MainViewModel />
</Window.DataContext>
<Grid>
<!-- Binding to ViewModel's Name property -->
<TextBox Text="{Binding Name}" Width="200" Height="30" Margin="10" />
<!-- Binding to ViewModel's Age property -->
<TextBox Text="{Binding Age}" Width="200" Height="30" Margin="10,50,10,10" />
<!-- Button that triggers Command -->
<Button Content="Submit" Command="{Binding SubmitCommand}" Width="100" Height="30" Margin="10,100,10,10" />
</Grid>
</Window>
এখানে:
Text
প্রপার্টি ViewModel এর Name প্রপার্টির সাথে বাইন্ড করা হয়েছে।Command
প্রপার্টি ViewModel এর SubmitCommand
কমান্ডের সাথে বাইন্ড করা হয়েছে।ViewModel এর কোড হবে কিছুটা এই রকম:
public class MainViewModel : INotifyPropertyChanged
{
private string _name;
private int _age;
public string Name
{
get { return _name; }
set
{
_name = value;
OnPropertyChanged();
}
}
public int Age
{
get { return _age; }
set
{
_age = value;
OnPropertyChanged();
}
}
public ICommand SubmitCommand { get; }
public MainViewModel()
{
SubmitCommand = new RelayCommand(OnSubmit);
}
private void OnSubmit()
{
// Perform action when button is clicked
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
এখানে:
Command ব্যবহার করলে, UI উপাদান (যেমন Button) এর সাথে ViewModel এর কমান্ড সম্পর্কিত লজিক বাইন্ড করা হয়।
<Button Content="Submit" Command="{Binding SubmitCommand}" Width="100" Height="30" Margin="10,100,10,10" />
এখানে:
SubmitCommand
এর সাথে বাইন্ড করা হয়েছে। ফলে, বাটন ক্লিক করলে SubmitCommand
কমান্ড এক্সিকিউট হবে।XAML ব্যবহার করে View তৈরি করার মাধ্যমে UI এর গঠন এবং লেআউট ডিফাইন করা হয়। Data Binding এবং Command Patterns এর মাধ্যমে View এবং ViewModel এর মধ্যে কার্যকর যোগাযোগ তৈরি হয়, যা অ্যাপ্লিকেশনটিকে ক্লিন, রিইউজেবল এবং মেইনটেনেবল করে তোলে। ViewModel থেকে ডেটা বাইন্ডিং এবং কমান্ড প্যাটার্ন ব্যবহারের মাধ্যমে UI এবং বিজনেস লজিকের মধ্যে একটি পরিষ্কার সেপারেশন আসে।
Data Binding হল একটি প্রক্রিয়া যার মাধ্যমে UI উপাদানগুলির (যেমন, টেক্সটবক্স, লেবেল, বাটন ইত্যাদি) সাথে ViewModel বা Model এর ডেটা সংযুক্ত করা হয়। এটি একটি সিস্টেম তৈরি করে যেখানে View এবং ViewModel এর মধ্যে ডেটা এবং ইন্টারঅ্যাকশন স্বয়ংক্রিয়ভাবে সিঙ্ক্রোনাইজ হয়। অর্থাৎ, একবার যখন ViewModel বা Model-এ ডেটা পরিবর্তন হয়, তখন তা স্বয়ংক্রিয়ভাবে View-এ প্রতিফলিত হয়, এবং যদি View-এ কোনো পরিবর্তন ঘটে, তা আবার ViewModel-এ প্রতিফলিত হয় (যদি এটি Two-Way Binding থাকে)।
এটি MVVM (Model-View-ViewModel) এবং অন্যান্য ডিজাইন প্যাটার্নে UI এবং লজিক এর মধ্যে স্পষ্ট বিভাজন রাখে, ফলে কোডের পুনঃব্যবহারযোগ্যতা এবং মেইনটেনেন্স অনেক সহজ হয়।
Data Binding প্রধানত তিনটি প্রকারে বিভক্ত করা যায়:
One-Way Data Binding এর মাধ্যমে ViewModel বা Model এর ডেটা শুধুমাত্র View-এ পাঠানো হয়। অর্থাৎ, ViewModel বা Model এর ডেটা যখন পরিবর্তিত হয়, তখন তা View-এ স্বয়ংক্রিয়ভাবে আপডেট হয়, কিন্তু View এর কোন পরিবর্তন ViewModel-এ রিফ্লেক্ট করে না।
এটি সাধারণত ডেটা প্রদর্শনের জন্য ব্যবহৃত হয়।
উদাহরণ:
<TextBlock Text="{Binding Name}" />
এখানে Name প্রপার্টি ViewModel-এ থাকে, এবং এটি TextBlock এর Text
প্রপার্টির সাথে বাইন্ড করা হয়েছে।
Two-Way Data Binding এর মাধ্যমে ViewModel এবং View একে অপরের সাথে ডেটা শেয়ার করে। যখন View-এ কোনো পরিবর্তন হয়, তা ViewModel-এ প্রতিফলিত হয়, এবং যখন ViewModel-এ ডেটা পরিবর্তিত হয়, তা View-এ প্রতিফলিত হয়।
এটি সাধারণত ব্যবহারকারীর ইনপুটের জন্য ব্যবহৃত হয়, যেখানে ব্যবহারকারী View-এ কোনো পরিবর্তন করলে তা ViewModel-এ সিঙ্ক্রোনাইজ হয়ে যায়।
উদাহরণ:
<TextBox Text="{Binding UserName, Mode=TwoWay}" />
এখানে UserName প্রপার্টি ViewModel-এ থাকে এবং ব্যবহারকারী TextBox-এ কিছু লিখলে তা স্বয়ংক্রিয়ভাবে ViewModel-এ আপডেট হবে।
এটি এমন একটি প্রকার যেখানে View এর ইনপুট ViewModel বা Model এ পাঠানো হয়, কিন্তু ডেটা পরিবর্তন হওয়ার পর তা View-এ আপডেট হয় না। এটি সাধারণত View থেকে ViewModel-এ ইনপুট পাঠানোর জন্য ব্যবহৃত হয়, যেমন ফর্ম সাবমিশন বা বাটনে ক্লিক করার সময়।
উদাহরণ:
<Button Command="{Binding SubmitCommand}" Content="Submit" />
এখানে, SubmitCommand ViewModel-এ থাকা একটি কমান্ড, যা Button ক্লিকের মাধ্যমে ViewModel-এ পাঠানো হয়।
Data Binding UI এবং ডেটার মধ্যে সিঙ্ক্রোনাইজেশন বজায় রাখতে সহায়ক একটি শক্তিশালী ধারণা। এটি MVVM বা অন্যান্য ডিজাইন প্যাটার্নে UI এবং লজিকের মধ্যে স্পষ্ট বিভাজন তৈরি করে এবং ডেটার অবস্থা সহজভাবে ViewModel বা Model থেকে View-এ প্রেরণ বা গ্রহণ করার সুযোগ দেয়। সঠিকভাবে ব্যবহৃত হলে এটি কোড কমাতে, ডিবাগিং সহজ করতে এবং অ্যাপ্লিকেশনের কর্মক্ষমতা উন্নত করতে সহায়ক হতে পারে।
Data Binding হল MVVM (Model-View-ViewModel) প্যাটার্নের একটি গুরুত্বপূর্ণ অংশ, যা View এবং ViewModel এর মধ্যে ডেটার স্বয়ংক্রিয় সিঙ্ক্রোনাইজেশন নিশ্চিত করে। Data Binding এর দুইটি প্রধান ধরন হল One-Way এবং Two-Way। এগুলি ভিন্ন ভিন্ন পরিস্থিতিতে ব্যবহৃত হয়, যেখানে প্রতিটির নিজস্ব সুবিধা এবং ব্যবহারিক উদ্দেশ্য রয়েছে।
One-Way Data Binding হল এমন একটি প্রক্রিয়া যেখানে ViewModel থেকে View-এ ডেটা এক দিকেই প্রবাহিত হয়, এবং View থেকে ViewModel-এ কোন ডেটা প্রবাহিত হয় না। এতে ViewModel এর কোনো পরিবর্তন স্বয়ংক্রিয়ভাবে View-এ প্রতিফলিত হয়, কিন্তু ব্যবহারকারী যদি UI তে কোন পরিবর্তন করে (যেমন একটি টেক্সটবক্সে কিছু টাইপ করা), তা ViewModel-এ প্রতিফলিত হয় না।
ধরা যাক, আমাদের একটি Product
Model আছে এবং আমরা ViewModel-এ এই তথ্যটি দেখতে চাই:
ViewModel:
public class ProductViewModel
{
public string ProductName { get; set; }
public decimal Price { get; set; }
}
View (XAML):
<TextBlock Text="{Binding ProductName}" />
<TextBlock Text="{Binding Price}" />
এখানে, ProductName এবং Price এর মান ViewModel থেকে View (TextBlock) এ সরাসরি বাইন্ড হচ্ছে। কিন্তু, যদি ব্যবহারকারী View-এ কোনো পরিবর্তন করে, তা ViewModel এ আপডেট হবে না। শুধুমাত্র ViewModel থেকে View-এ ডেটা প্রবাহিত হচ্ছে।
Two-Way Data Binding হল এমন একটি প্রক্রিয়া যেখানে ডেটা উভয় দিকে প্রবাহিত হয়: ViewModel থেকে View এবং View থেকে ViewModel। এর মানে হলো, যখন ViewModel-এ ডেটা পরিবর্তিত হয়, তখন তা View-এ আপডেট হবে এবং যদি ব্যবহারকারী View-এ কোনো পরিবর্তন করে (যেমন ফর্মের ইনপুট), তখন সেই পরিবর্তন ViewModel-এ প্রতিফলিত হবে।
ধরা যাক, আমরা একই Product
Model ব্যবহার করছি এবং একটি টেক্সটবক্সে ProductName আপডেট করতে চাই।
ViewModel:
public class ProductViewModel : INotifyPropertyChanged
{
private string _productName;
public string ProductName
{
get { return _productName; }
set
{
if (_productName != value)
{
_productName = value;
OnPropertyChanged(nameof(ProductName));
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
View (XAML):
<TextBox Text="{Binding ProductName, Mode=TwoWay}" />
<TextBlock Text="{Binding ProductName}" />
এখানে TextBox এর Text প্রপার্টি ProductName এর সাথে Two-Way বাইন্ডিং করা হয়েছে, যার মানে হচ্ছে:
বৈশিষ্ট্য | One-Way Data Binding | Two-Way Data Binding |
---|---|---|
ডেটার প্রবাহ | ViewModel থেকে View-এ শুধুমাত্র। | ViewModel এবং View উভয়ের মধ্যে। |
ডেটার আপডেট | শুধুমাত্র ViewModel পরিবর্তন হলে View আপডেট হয়। | ViewModel এবং View উভয়ই একে অপরকে আপডেট করে। |
ব্যবহার | UI ডেটা শুধুমাত্র প্রদর্শনের জন্য ব্যবহৃত হয়। | UI ডেটা এবং ব্যবহারকারীর ইনপুট উভয়ই ViewModel-এ প্রেরিত হয়। |
কোডিং কমপ্লেক্সিটি | সাধারণ এবং কমপ্লেক্স নয়। | কিছুটা জটিল, কারণ ViewModel-এ প্রপার্টি পরিবর্তন এবং View-এর সাথে সিঙ্ক্রোনাইজেশন প্রয়োজন। |
উদাহরণ | একটি লেবেল বা টেক্সটবক্সের মান দেখানো। | ফর্মের ইনপুট গ্রহণ এবং তা ViewModel-এ আপডেট করা। |
উপযুক্ত টাইপের Data Binding নির্বাচন করা, আপনার অ্যাপ্লিকেশনের প্রয়োজন এবং কার্যকারিতার উপর নির্ভর করে।
MVVM প্যাটার্নে View কাস্টমাইজ করার জন্য Template এবং Style ব্যবহার করা হয়। এগুলি UI উপাদানগুলির (যেমন বোতাম, টেক্সটবক্স ইত্যাদি) লুক এবং ফাংশনালিটি কাস্টমাইজ করতে সাহায্য করে। Template এবং Style একটি অ্যাপ্লিকেশনের ব্যবহারকারীর অভিজ্ঞতাকে আরও আকর্ষণীয় এবং কার্যকরী করে তোলে।
Style UI উপাদানের দৃশ্যমানতা এবং লেআউট কাস্টমাইজ করার একটি উপায়। Style ব্যবহার করে আপনি একই ধরনের একাধিক UI উপাদানকে একটি সাধারণ স্টাইল প্রদান করতে পারেন, যা কোডের পুনঃব্যবহারযোগ্যতা বাড়ায় এবং অ্যাপ্লিকেশনটির এক্সটেনশন সহজ করে।
TargetType="Button"
ব্যবহার করবেন।<Window.Resources>
<!-- Button এর জন্য একটি স্টাইল -->
<Style TargetType="Button">
<Setter Property="Background" Value="Green"/>
<Setter Property="Foreground" Value="White"/>
<Setter Property="FontSize" Value="14"/>
<Setter Property="Padding" Value="10"/>
</Style>
</Window.Resources>
<Grid>
<Button Content="Click Me" Width="100" Height="50"/>
</Grid>
এই উদাহরণে, Button এর জন্য একটি স্টাইল তৈরি করা হয়েছে যা সব বাটনের ব্যাকগ্রাউন্ডকে সবুজ, টেক্সট রঙটিকে সাদা এবং ফন্ট সাইজকে ১৪ পিক্সেল করবে। যখনই আপনি Button ব্যবহার করবেন, এটি ঐ স্টাইলের মাধ্যমে কাস্টমাইজড হবে।
Template UI উপাদানগুলির স্ট্রাকচার এবং লেআউট কাস্টমাইজ করার একটি শক্তিশালী উপায়। ControlTemplate এবং DataTemplate হল দুটি প্রধান প্রকারের টেমপ্লেট, যা UI উপাদানের কন্টেন্ট এবং লেআউট নির্ধারণ করতে ব্যবহৃত হয়।
ControlTemplate এর মাধ্যমে আপনি UI উপাদানের সারা কাঠামো এবং স্টাইল কাস্টমাইজ করতে পারেন। এটি UI উপাদানের রূপরেখা (structure) পরিবর্তন করতে দেয়, যেমন বাটন, টেক্সটবক্স বা স্লাইডার কিভাবে দেখাবে তা নির্ধারণ করা।
ControlTemplate উদাহরণ:
<Window.Resources>
<!-- Button এর জন্য ControlTemplate -->
<ControlTemplate TargetType="Button">
<Border Background="DarkBlue" BorderBrush="Black" BorderThickness="2">
<TextBlock Text="{Binding Content}" HorizontalAlignment="Center" VerticalAlignment="Center" Foreground="White"/>
</Border>
</ControlTemplate>
</Window.Resources>
<Grid>
<Button Content="Click Me" Width="150" Height="50"/>
</Grid>
এই উদাহরণে, Button এর পুরো কাঠামো কাস্টমাইজ করা হয়েছে। এখানে Button এর মধ্যে থাকা টেক্সট এবং ব্যাকগ্রাউন্ডের ডিজাইন পুরোপুরি কাস্টমাইজড হয়েছে। ControlTemplate-এ টেক্সট এবং ব্যাকগ্রাউন্ড পরিবর্তন করতে আপনি একটি Border এবং TextBlock ব্যবহার করেছেন।
DataTemplate এর মাধ্যমে আপনি একটি ডেটা আইটেমের জন্য UI উপাদান কাস্টমাইজ করতে পারেন। এটি ডেটাবাইন্ড UI উপাদানগুলির জন্য ব্যবহার হয়, যেমন ListView বা ComboBox, যেখানে আপনি ডেটার নির্দিষ্ট প্রপার্টি UI উপাদানের মধ্যে প্রদর্শন করতে পারেন।
DataTemplate উদাহরণ:
<Window.Resources>
<!-- DataTemplate এর মাধ্যমে ListItem কাস্টমাইজ করা -->
<DataTemplate x:Key="ProductTemplate">
<StackPanel>
<TextBlock Text="{Binding Name}" FontWeight="Bold"/>
<TextBlock Text="{Binding Price}" Foreground="Green"/>
</StackPanel>
</DataTemplate>
</Window.Resources>
<ListView ItemsSource="{Binding Products}" ItemTemplate="{StaticResource ProductTemplate}"/>
এই উদাহরণে, DataTemplate ব্যবহার করে ListView এ প্রতিটি প্রোডাক্ট আইটেমের জন্য কাস্টম লেআউট তৈরি করা হয়েছে। Products হল একটি Collection যা Name এবং Price প্রপার্টি ধারণ করে, এবং DataTemplate এর মাধ্যমে সেই ডেটা UI-তে কাস্টমভাবে প্রদর্শিত হচ্ছে।
Template এবং Style হল MVVM প্যাটার্নের মধ্যে View কাস্টমাইজেশন প্রক্রিয়া। Style UI উপাদানগুলির অ্যাপিয়ারেন্স পরিবর্তন করে, যেখানে Template UI উপাদানের কাঠামো এবং লেআউট পরিবর্তন করে। এগুলি ডেভেলপারদের জন্য কোড পুনঃব্যবহারযোগ্য এবং মেইনটেনযোগ্য অ্যাপ্লিকেশন তৈরি করার ক্ষেত্রে সহায়ক।
common.read_more